from django.http import HttpResponse
from django.shortcuts import render


# Create your views here.
def set_session(request):
    # 模拟服务器 根据一定的业务逻辑来保存信息
    username = request.GET.get('username')

    # 设置session
    # 系统将session 的操作 放到了 request 的实例对象中
    # request.session[key]=value

    request.session['username'] = username

    # 设置session的过期时间
    # ① 默认是 2周   set_expiry(None)
    # ② 设置  set_expiry( seconds )
    request.session.set_expiry(3600)

    return HttpResponse('set_session')


def get_session(request):
    # 获取session
    # username = request.session['username']
    # username = request.session.get('username')

    del request.session['username']

    # 删除 session数据. 但是 sessionid 保留
    # request.session.clear()
    # 删除session数据,同时 sessionid 也删除
    # request.session.flush()

    return HttpResponse('get_session')


# 我们在实际开发过程中,都会根据 HTTP的不同请求方式 来实现 相关的功能
# 所以我们区分 不同的请求方式

def jd(request):
    if request.method == 'GET':
        return HttpResponse('显示登录页面')
    else:
        return HttpResponse('实现登录功能')


# 面向对象的方式
"""
    类视图

    class Name(View):

        # http请求方法小写
        def http_method_lower(self,request):

            return 响应

"""
from django.views import View


class JdLoginView(View):
    def get(self, request):
        return HttpResponse('显示登录页面')

    def post(self, request):
        return HttpResponse('实现登录功能')


"""
定义一个个人中心 类视图
类视图中 有 get方法 获取数据  post方法 修改数据

必须是登录用户才可以访问


装饰器可以 实现每个函数的 判断
除了装饰器 还能怎么实现呢??? 

Python的语言有一个显著的特点 -- 多继承

系统为我们提供了一个 是否登录的判断
from django.contrib.auth.mixins import LoginRequiredMixin

class CenterView(View,LoginRequiredMixin):
(<class 'book.views.CenterView'>, <class 'django.views.generic.base.View'>, <class 'django.contrib.auth.mixins.LoginRequiredMixin'>, <class 'django.contrib.auth.mixins.AccessMixin'>, <class 'object'>)

class CenterView(LoginRequiredMixin,View):
(<class 'book.views.CenterView'>, <class 'django.contrib.auth.mixins.LoginRequiredMixin'>, <class 'django.contrib.auth.mixins.AccessMixin'>, <class 'django.views.generic.base.View'>, <class 'object'>)
"""
from django.contrib.auth.mixins import LoginRequiredMixin


# 系统是如何判断 我们是否登录的
# 大家是否还记得 admin 后台.如果没有登录admin后台 就是没登录 登录了admin后台 就有session信息.有session信息就是登录

# class CenterView(View,LoginRequiredMixin):
class CenterView(LoginRequiredMixin, View):
    def get(self, request):
        # isLogin 后期 肯定会根据 状态保持信息来判断
        # isLogin = False
        # if isLogin:
        return HttpResponse('center get')
        # else:
        #     return HttpResponse('请登录')

    def post(self, request):
        # isLogin = False
        # if isLogin:
        return HttpResponse('post')
        # else:
        #     return HttpResponse('请登录')
